Status iniStack(Sqstack &S)
{
  S.base=(SElemType *)malloc(sizeof(SElemType)*stack_INIT_SIZE);
  S.base=new SElemType[stackINCREMENT];//等价定义
    if(!S.base)
    return ERROR;//分配错误
 
    S.top=S.base;//***top初始为base表示栈为空***顺序！！！
 
    S.stacksize=stack_INIT_SIZE;//栈空间最大容量为stack——INIT——SIZE
    return OK;
}//初始化栈
Status push(Sqstack &S,SElemType x)
{
 if(S.top-S.base==S.stacksize)
        return ERROR;//栈满
（if(S.top-S.base>=S.stacksize){
		S.base=(SElemType * )realloc(S.base,
			(S.stacksize+stackINCREMENT)*sizeof(SElemType));
		if(!S.base)return(ERROR);
		S.top=S.base+S.stacksize;
		S.stacksize+=stackINCREMENT;
  	}）//重新分配空间
    *S.top++=x;//元素x到栈顶，栈顶指针加一
    return OK;
}//入栈
Status pop(Sqstack &S,SElemType &e)
{
 if(S.base==S.top)
    return ERROR;//栈空
    e=*--S.top;//栈顶指针减一，栈顶元素赋给e
    return OK;
}//出栈#include <stdio.h>
#include <malloc.h>
typedef int Status;
typedef char SElemType;
#define stack_INIT_SIZE     100
#define stackINCREMENT  10
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
 typedef struct {
       SElemType  *base;   //栈底指针
       SElemType  *top;     //栈顶指针
       int stacksize;       //栈空间
}Sqstack;
 
Status iniStack(Sqstack &S) //初始化栈
{
  /* 请在这里填写答案 */
  }//InitStack
 
Status push(Sqstack &S,SElemType x)
{
    /* 请在这里填写答案 */
}
 
Status pop(Sqstack &S,SElemType &e)
{
    /* 请在这里填写答案 */
}
 
Status print_stack(Sqstack S)//打印栈中元素
{
    SElemType  *p=S.base;
    while(p<S.top)
    {
        printf("%c ",*p);
        p++;
    }
   return OK;
}
int main()
{
    Sqstack S;
    SElemType k;
    int n,i;
    iniStack(S);
    SElemType e;
    scanf("%c",&e);
    while(e!='0')    //不断输入入栈元素，直到字符‘0’weizhi 
       { if(push(S,e)==ERROR)
           printf("入栈失败！\n");
         scanf("%c",&e);
       }
    scanf("%d",&n);  //输入出栈次数
    for(i=1;i<=n;i++)
     if(pop(S,k)==ERROR)
         printf("出栈失败！\n");
     else
        printf("出栈元素为：%c\n",k);
     print_stack(S);  //打印出栈后栈中元素
    return 0;
}
 